using namespace std;

#include "Buffer.h"

Buffer::Buffer(int tamanioMAX) {
	this->taminioMAX = tamanioMAX;
	this->cantComponenteEnMemoria = 0;
}

int Buffer::escribir(Componente& componente, int offset) {
	datos.push_back(&componente);
	this->cantComponenteEnMemoria++;
	return this->cantComponenteEnMemoria - 1;
}
Componente* Buffer::leer(int offset) {
	// TODO ver como se maneja el tema del offset. Recibe el offset del archivo, inutil.
	return datos[offset];
}
void Buffer::borrarComp(int offset) {
	// TODO ver como se maneja el tema del offset. Recibe el offset del archivo, inutil.

}
void Buffer::imprimir() {
}

int Buffer::buscarEspacioLibre(int) {
	//devuelve la posicion para insertar... ,sino -1
	if (this->datos.size() <= this->taminioMAX) {
		return this->datos.size();
	} else
		return -1;
}

// Textos
void Buffer::modificarTexto(Componente&) {
}
void Buffer::borrarTexto(Componente&) {
}
Componente* Buffer::leerTexto(int) {
	return NULL;//solo para evitar warning
}
void Buffer::escribirTexto(Componente&) {
}

int Buffer::eof() {
	return (datos.size() - 1);
}

//no hace falta o no aporta al manejo del buffer
void Buffer::crearMetadata(char tipo, int tamanio, list<string> tipos, list<
		bool> claves) {
}
void Buffer::inicializarMetadata(char tipo) {
}
Metadata* Buffer::abrir(char tipo) {
	return NULL;
}
void Buffer::cerrar() {
}

int Buffer::getcantidadBloques() {
	return this->cantComponenteEnMemoria;
}
int Buffer::aumentarComponentesBloques() {
	return -1;//solo para evitar warning
}
int Buffer::getOffsetComienzoDatos() {
	return 0;//solo para evitar warning
}
